/*! 
 * Header file for the collision primitive attributes.
 *
 * \author Devis Rossini
 * \date 24 April 2012
 */  
#ifndef PHXCOLLISIONPRIMITIVEATTRIBUTES_H_INCLUDE_GUARD
#define PHXCOLLISIONPRIMITIVEATTRIBUTES_H_INCLUDE_GUARD

#include <map>

namespace phx
{
	/*!
	 * Rigid body attributes.
	 */
	typedef enum CollisionPrimitiveAttribute
	{
		NONE,
	} CollisionPrimitiveAttribute;

	/*!
	 * Attributes manager for a rigid body.
	 */
	class CollisionPrimitiveAttributesManager
	{
	private:

		typedef std::map<CollisionPrimitiveAttribute, bool> AttributesMap;

	public:

		/*!
		 * Constructor (empty).
		 */
		CollisionPrimitiveAttributesManager() { }

		/*!
		 * Destructor (empty).
		 */
		~CollisionPrimitiveAttributesManager() { } 

		/*! 
		 * Set a new attribute or change the status of a specified one.
		 */
		void SetAttribute(const CollisionPrimitiveAttribute iAttribute, const bool iAcitve);

		/*!
		 * Return true if the primitive has a specified attribute.
		 */
		bool HasAttribute(const CollisionPrimitiveAttribute iAttribute) const;

	private:

		AttributesMap mAttributesMap;
	};
}

#endif // PHXCOLLISIONPRIMITIVEATTRIBUTES_H_INCLUDE_GUARD